#!/bin/sh
#
#	Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this software; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
# Boston, MA 02111-1307 USA

# Commentary:

# Usage: guile-doc-snarf -o OUTFILE INFILE [CPP-OPTIONS ...]
#
# Process INFILE using the C pre-processor and some other programs.
# Write output to a file named OUTFILE.  If there are errors during
# processing, delete OUTFILE and exit with non-zero status.
#
# During snarfing, the pre-processor macro SCM_MAGIC_SNARFER is
# defined.
#
# If env var CPP is set, use its value instead of the C pre-processor
# determined at Guile configure-time: "@CPP@".  Likewise for AWK (default
# "@AWK@").

# Code:

if [ ! x"$1" = x-o -o x"$3" = x ] ; then
    me=`basename $0`
    echo ${me}: ERROR: missing required args
    echo "Usage: $me -o OUTFILE INFILE [CPP-OPTIONS ...]"
    exit 1
fi

outfile=$2 ; fullfilename=$3 ; shift ; shift ; shift

# strip path to source directory
filename=`basename $fullfilename`

temp="/tmp/snarf.$$"
trap "rm -f $temp" 0 1 2 15

## Let the user override the preprocessor & awk autoconf found.
test -n "${CPP+set}" || CPP="@CPP@"
test -n "${AWK+set}" || AWK="@AWK@"

## Must run guile-func-name-check on the unpreprocessed source
${AWK} -f guile-func-name-check "$fullfilename"

## We must use a temporary file here, instead of a pipe, because we
## need to know if CPP exits with a non-zero status.
rm -f $outfile
${CPP} -DSCM_MAGIC_SNARFER "$fullfilename" "$@" > ${temp} || exit $?
cat ${temp} | sed 's/^\(.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}.\{128\}\).*/\1/g' | \
${AWK} -f `dirname $0`/guile-snarf.awk $outfile > /dev/null

# guile-doc-snarf ends here
